export default {
  extends: ["stylelint-config-standard", "stylelint-config-recess-order"],
  ignoreFiles: ["**/*.js", "**/*.jsx", "**/*.tsx", "**/*.ts", "**/*.json", "**/*.md"],
  overrides: [
    {
      customSyntax: "postcss-html",
      files: ["*.(html|vue)", "**/*.(html|vue)"],
      rules: {
        "selector-pseudo-class-no-unknown": [
          true,
          {
            ignorePseudoClasses: ["global", "deep"]
          }
        ],
        "selector-pseudo-element-no-unknown": [
          true,
          {
            ignorePseudoElements: ["v-deep", "v-global", "v-slotted"]
          }
        ]
      }
    },
    {
      customSyntax: "postcss-scss",
      extends: ["stylelint-config-recommended-scss", "stylelint-config-recommended-vue/scss"],
      files: ["*.scss", "**/*.scss"]
    }
  ],
  plugins: ["stylelint-order", "@stylistic/stylelint-plugin", "stylelint-prettier", "stylelint-scss"],
  rules: {
    "at-rule-no-unknown": [
      true,
      {
        ignoreAtRules: [
          "extends",
          "ignores",
          "include",
          "mixin",
          "if",
          "else",
          "media",
          "for",
          "at-root",
          "tailwind",
          "apply",
          "variants",
          "responsive",
          "screen",
          "function",
          "each",
          "use",
          "forward",
          "return"
        ]
      }
    ],
    "font-family-no-missing-generic-family-keyword": null,
    "function-no-unknown": null,
    "import-notation": null,
    "media-feature-range-notation": null,
    "named-grid-areas-no-invalid": null,
    "no-descending-specificity": null,
    "no-empty-source": null,
    "order/order": [
      [
        "dollar-variables",
        "custom-properties",
        "at-rules",
        "declarations",
        {
          name: "supports",
          type: "at-rule"
        },
        {
          name: "media",
          type: "at-rule"
        },
        {
          name: "include",
          type: "at-rule"
        },
        "rules"
      ],
      { severity: "error" }
    ],
    "prettier/prettier": true,
    "rule-empty-line-before": [
      "always",
      {
        ignore: ["after-comment", "first-nested"]
      }
    ],
    "scss/at-rule-no-unknown": [
      true,
      {
        ignoreAtRules: [
          "extends",
          "ignores",
          "include",
          "mixin",
          "if",
          "else",
          "media",
          "for",
          "at-root",
          "tailwind",
          "apply",
          "variants",
          "responsive",
          "screen",
          "function",
          "each",
          "use",
          "forward",
          "return"
        ]
      }
    ],
    "scss/operator-no-newline-after": null,
    "selector-class-pattern":
      "^(?:(?:o|c|u|t|s|is|has|_|js|qa)-)?[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*(?:__[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)?(?:--[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)?(?:[.+])?$",

    "selector-not-notation": null
  }
};
